<template>
  <el-card header="营销信息" class="form-section sidebar-card">
    <el-form-item label="合作状态" prop="is_cooperation">
      <el-switch
        v-model="isCooperation"
        active-text="已合作"
        inactive-text="未合作"
        @change="handleCooperationChange"
      />
    </el-form-item>

    <template v-if="isCooperation">
      <el-form-item label="合作时间" prop="cooperation_time">
        <el-date-picker
          v-model="formData.cooperation_time"
          type="date"
          placeholder="请选择合作时间"
          value-format="X"
          style="width: 100%"
          @change="handleCooperationTimeChange"
        />
      </el-form-item>
    </template>
  </el-card>
</template>

<script setup lang="ts">
  import { computed } from 'vue'

  const props = defineProps({
    modelValue: {
      type: Object,
      default: () => ({}),
    },
  })

  const emit = defineEmits(['change'])

  // 直接使用props.modelValue，避免尝试重新赋值整个对象
  const formData = computed(() => props.modelValue)

  // 使用计算属性确保数据类型一致：始终为数字 0/1
  const isCooperation = computed({
    get: () => {
      const value = formData.value.is_cooperation
      // 转换为数字：1 或 0
      return value === 1 || value === true || value === '1'
    },
    set: (val: boolean) => {
      // 设置为数字类型，保持与数据库一致
      formData.value.is_cooperation = val ? 1 : 0
      // 通知父组件
      emit('change', { field: 'is_cooperation', value: val ? 1 : 0 })
    },
  })

  // 处理合作状态变化
  const handleCooperationChange = (value: boolean) => {
    // 关闭合作状态时，清空合作时间
    if (!value) {
      formData.value.cooperation_time = 0
    } else {
      // 开启合作状态时，如果没有合作时间，设置为当前时间
      if (!formData.value.cooperation_time) {
        formData.value.cooperation_time = Math.floor(Date.now() / 1000)
      }
    }
  }

  // 处理合作时间变化
  const handleCooperationTimeChange = (value: string | number) => {
    // 当设置了合作时间时，自动开启合作状态
    if (value) {
      formData.value.is_cooperation = 1
      emit('change', { field: 'is_cooperation', value: 1 })
    }
  }
</script>
